open comment asterisk Copyright open a parentheses C close a parentheses 1999 Derek Fawcus is lesser than derek @ spider dot com is greater than 
 
 asterisk 
 
 asterisk This code may be used under the terms of Version 2 of the GPL comma 
 
 asterisk read the file COPYING for details dot 
 
 asterisk 
 
 close comment 
 
 open comment asterisk These routines do some reordering of the supplied data before 
 
 asterisk calling engine open a parentheses close a parentheses to do the main work dot 
 
 asterisk 
 
 asterisk The reordering seems similar to that done by the initial stages of 
 
 asterisk the DES algorithm comma in that it looks like it ' s just been done to 
 
 asterisk try and make software decoding slower dot I ' m not sure that it 
 
 asterisk actually adds anything to the security dot 
 
 asterisk 
 
 asterisk The nature of the shuffling is that the bits of the supplied 
 
 asterisk parameter ' varient ' are reorganised open a parentheses and some inverted close a parentheses comma and 
 
 asterisk the bytes of the parameter ' challenge ' are reorganised dot 
 
 asterisk 
 
 asterisk The reorganisation in each routine is different comma and the first 
 
 asterisk open a parentheses CryptKey1 close a parentheses does not bother of play with the ' varient ' parameter dot 
 
 asterisk 
 
 asterisk Since this code is only run once per disk change comma I ' ve made the 
 
 asterisk code table driven in order to improve readability dot 
 
 asterisk 
 
 asterisk Since these routines are so similar to each other comma one could even 
 
 asterisk abstract them all to one routine supplied a parameter determining 
 
 asterisk the nature of the reordering it has to do dot 
 
 close comment 
 
 number sign include " css dash auth dot h " 
 
 
 
 typedef unsigned long u32 dot comma 
 
 
 
 static void engine open a parentheses int varient comma byte const asterisk input comma struct block asterisk output close a parentheses dot comma 
 
 
 
 void CryptKey1 open a parentheses int varient comma byte const asterisk challenge comma struct block asterisk key close a parentheses 
 
 open a bracket 
 
 static byte perm underscore challenge open a square bracket close a square bracket is assigned open a bracket 1 comma 3 comma 0 comma 7 comma 5 comma 2 comma 9 comma 6 comma 4 comma 8 close a bracket dot comma 
 
 
 
 byte scratch open a square bracket 10 close a square bracket dot comma 
 
 int i dot comma 
 
 
 
 for open a parentheses i is assigned 9 dot comma i is greater or equal than scratch open a square bracket i close a square bracket is assigned challenge open a square bracket perm underscore challenge open a square bracket i close a square bracket close a square bracket dot comma 
 
 
 
 engine open a parentheses varient comma scratch comma key close a parentheses dot comma 
 
 close a bracket 
 
 
 
 open comment asterisk 4 dash is greater than ! 3 
 
 asterisk 3 dash is greater than 4 
 
 asterisk varient bits : 2 dash is greater than 0 perm underscore varient bits 
 
 asterisk 1 dash is greater than 2 
 
 asterisk 0 dash is greater than ! 1 
 
 close comment void CryptKey2 open a parentheses int varient comma byte const asterisk challenge comma struct block asterisk key close a parentheses 
 
 open a bracket 
 
 static byte perm underscore challenge open a square bracket close a square bracket is assigned open a bracket 6 comma 1 comma 9 comma 3 comma 8 comma 5 comma 7 comma 4 comma 0 comma 2 close a bracket dot comma 
 
 
 
 static byte perm underscore varient open a square bracket close a square bracket is assigned open a bracket 
 
 0x0a comma 0x08 comma 0x0e comma 0x0c comma 0x0b comma 0x09 comma 0x0f comma 0x0d comma 
 
 0x1a comma 0x18 comma 0x1e comma 0x1c comma 0x1b comma 0x19 comma 0x1f comma 0x1d comma 
 
 0x02 comma 0x00 comma 0x06 comma 0x04 comma 0x03 comma 0x01 comma 0x07 comma 0x05 comma 
 
 0x12 comma 0x10 comma 0x16 comma 0x14 comma 0x13 comma 0x11 comma 0x17 comma 0x15 close a bracket dot comma 
 
 
 
 byte scratch open a square bracket 10 close a square bracket dot comma 
 
 int i dot comma 
 
 
 
 for open a parentheses i is assigned 9 dot comma i is greater or equal than 0 dot comma dash dash i close a parentheses 
 
 scratch open a square bracket i close a square bracket is assigned challenge open a square bracket perm underscore challenge open a square bracket i close a square bracket close a square bracket dot comma 
 
 
 
 engine open a parentheses perm underscore varient open a square bracket varient close a square bracket comma scratch comma key close a parentheses dot comma 
 
 close a bracket 
 
 
 
 open comment asterisk 4 dash is greater than 0 
 
 asterisk 3 dash is greater than ! 1 
 
 asterisk varient bits : 2 dash is greater than ! 4 perm underscore varient bits 
 
 asterisk 1 dash is greater than 2 
 
 asterisk 0 dash is greater than 3 
 
 close comment void CryptBusKey open a parentheses int varient comma byte const asterisk challenge comma struct block asterisk key close a parentheses 
 
 open a bracket 
 
 static byte perm underscore challenge open a square bracket close a square bracket is assigned open a bracket 4 comma 0 comma 3 comma 5 comma 7 comma 2 comma 8 comma 6 comma 1 comma 9 close a bracket dot comma 
 
 static byte perm underscore varient open a square bracket close a square bracket is assigned open a bracket 
 
 0x12 comma 0x1a comma 0x16 comma 0x1e comma 0x02 comma 0x0a comma 0x06 comma 0x0e comma 
 
 0x10 comma 0x18 comma 0x14 comma 0x1c comma 0x00 comma 0x08 comma 0x04 comma 0x0c comma 
 
 0x13 comma 0x1b comma 0x17 comma 0x1f comma 0x03 comma 0x0b comma 0x07 comma 0x0f comma 
 
 0x11 comma 0x19 comma 0x15 comma 0x1d comma 0x01 comma 0x09 comma 0x05 comma 0x0d close a bracket dot comma 
 
 
 
 byte scratch open a square bracket 10 close a square bracket dot comma 
 
 int i dot comma 
 
 
 
 for open a parentheses i is assigned 9 dot comma i is greater or equal than 0 dot comma dash dash i close a parentheses 
 
 scratch open a square bracket i close a square bracket is assigned challenge open a square bracket perm underscore challenge open a square bracket i close a square bracket close a square bracket dot comma 
 
 
 
 engine open a parentheses perm underscore varient open a square bracket varient close a square bracket comma scratch comma key close a parentheses dot comma 
 
 close a bracket 
 
 
 
 open comment asterisk We use two LFSR ' s open a parentheses seeded from some of the input data bytes close a parentheses to 
 
 asterisk generate two streams of pseudo dash random bits dot These two bit streams 
 
 asterisk are then combined by simply adding with carry to generate a final 
 
 asterisk sequence of pseudo dash random bits which is stored in the buffer that 
 
 asterisk ' output ' points to the end of dash len is the size of this buffer dot 
 
 asterisk 
 
 asterisk The first LFSR is of degree 25 comma and has a polynomial of : 
 
 asterisk x ^ 13 + x ^ 5 + x ^ 4 + x ^ 1 + 1 
 
 asterisk 
 
 asterisk The second LSFR is of degree 17 comma and has a open a parentheses primitive close a parentheses polynomial of : 
 
 asterisk x ^ 15 + x ^ 1 + 1 
 
 asterisk 
 
 asterisk I don ' t know if these polynomials are primitive modulo 2 comma and thus 
 
 asterisk represent maximal dash period LFSR ' s dot 
 
 asterisk 
 
 asterisk 
 
 asterisk Note that we take the output of each LFSR from the new shifted in 
 
 asterisk bit comma not the old shifted out bit dot Thus for ease of use the LFSR ' s 
 
 asterisk are implemented in bit reversed order dot 
 
 asterisk 
 
 close comment static void generate underscore bits open a parentheses byte asterisk output comma int len comma struct block const asterisk s close a parentheses 
 
 open a bracket 
 
 u32 lfsr0 comma lfsr1 dot comma 
 
 byte carry dot comma 
 
 
 
 open comment asterisk initial values are non dash zero dot Thus when we initialise them from 
 
 asterisk the seed comma we ensure that a bit is set dot 
 
 close comment lfsr0 is assigned open a parentheses s dash is greater than b open a square bracket 0 close a square bracket is lesser than is lesser than 17 close a parentheses bitwise or open a parentheses s dash is greater than b open a square bracket 1 close a square bracket is lesser than is lesser than 9 close a parentheses bitwise or open a parentheses open a parentheses s dash is greater than b open a square bracket 2 close a square bracket bitwise and ~ 7 close a parentheses is lesser than is lesser than 1 close a parentheses bitwise or 8 bitwise or open a parentheses s dash is greater than b open a square bracket 2 close a square bracket bitwise and 7 close a parentheses dot comma 
 
 lfsr1 is assigned open a parentheses s dash is greater than b open a square bracket 3 close a square bracket is lesser than is lesser than 9 close a parentheses bitwise or 0x100 bitwise or s dash is greater than b open a square bracket 4 close a square bracket dot comma 
 
 
 
 + + output dot comma 
 
 
 
 carry is assigned 0 dot comma 
 
 do open a bracket 
 
 int bit dot comma 
 
 byte val dot comma 
 
 
 
 for open a parentheses bit is assigned 0 comma val is assigned 0 dot comma bit is lesser than 8 dot comma + + bit close a parentheses open a bracket 
 
 byte o underscore lfsr0 comma o underscore lfsr1 dot comma /*;Actually only 1 bit each close comment 
 byte combined dot comma 
 
 
 
 o underscore lfsr0 is assigned open a parentheses open a parentheses lfsr0 is greater than is greater than 24 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 21 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 20 close a parentheses ^ open a parentheses lfsr0 is greater than is greater than 12 close a parentheses close a parentheses bitwise and 1 dot comma 
 
 lfsr0 is assigned open a parentheses lfsr0 is lesser than is lesser than 1 close a parentheses bitwise or o underscore lfsr0 dot comma 
 
 
 
 o underscore lfsr1 is assigned open a parentheses open a parentheses lfsr1 is greater than is greater than 16 close a parentheses ^ open a parentheses lfsr1 is greater than is greater than 2 close a parentheses close a parentheses bitwise and 1 dot comma 
 
 lfsr1 is assigned open a parentheses lfsr1 is lesser than is lesser than 1 close a parentheses bitwise or o underscore lfsr1 dot comma 
 
 
 
 number sign define BIT0 open a parentheses x close a parentheses open a parentheses open a parentheses x close a parentheses bitwise and 1 close a parentheses 
 
 number sign define BIT1 open a parentheses x close a parentheses open a parentheses open a parentheses open a parentheses x close a parentheses is greater than is greater than 1 close a parentheses bitwise and 1 close a parentheses 
 
 
 
 combined is assigned ! o underscore lfsr1 + carry + ! o underscore lfsr0 dot comma 
 
 carry is assigned BIT1 open a parentheses combined close a parentheses dot comma 
 
 val bitwise or is assigned BIT0 open a parentheses combined close a parentheses is lesser than is lesser than bit dot comma 
 
 close a bracket 
 
 
 
 asterisk dash dash output is assigned val dot comma 
 
 close a bracket while open a parentheses dash dash len is greater than 0 close a parentheses dot comma 
 
 close a bracket 
 
 
 
 static byte Secret open a square bracket close a square bracket dot comma 
 
 static byte Varients open a square bracket close a square bracket dot comma 
 
 static byte Table0 open a square bracket close a square bracket dot comma 
 
 static byte Table1 open a square bracket close a square bracket dot comma 
 
 static byte Table2 open a square bracket close a square bracket dot comma 
 
 static byte Table3 open a square bracket close a square bracket dot comma 
 
 
 
 open comment asterisk This encryption engine implements one of 32 variations 
 
 asterisk one the same theme depending upon the choice in the 
 
 asterisk varient parameter open a parentheses 0 dash 31 close a parentheses dot 
 
 asterisk 
 
 asterisk The algorithm itself manipulates a 40 bit input into 
 
 asterisk a 40 bit output dot 
 
 asterisk The parameter ' input ' is 80 bits dot It consists of 
 
 asterisk the 40 bit input value that is to be encrypted followed 
 
 asterisk by a 40 bit seed value for the pseudo random number 
 
 asterisk generators dot 
 
 close comment static void engine open a parentheses int varient comma byte const asterisk input comma struct block asterisk output close a parentheses 
 
 open a bracket 
 
 byte cse comma term comma index dot comma 
 
 struct block temp1 dot comma 
 
 struct block temp2 dot comma 
 
 byte bits open a square bracket 30 close a square bracket dot comma 
 
 
 
 int i dot comma 
 
 
 
 open comment asterisk we alter the seed to the LFSR ' s used above comma then 
 
 asterisk generate the bits to play with dot 
 
 close comment for open a parentheses i is assigned 5 dot comma dash dash i >=p0 dot comma close a parentheses 
 
 temp1 dot b open a square bracket i close a square bracket is assigned input open a square bracket 5 + i close a square bracket ^ Secret open a square bracket i close a square bracket ^ Table2 open a square bracket i close a square bracket dot comma 
 
 
 
 generate underscore bits open a parentheses bitwise and bits open a square bracket 29 close a square bracket comma sizeof bits comma bitwise and temp1 close a parentheses dot comma 
 
 
 
 open comment asterisk select one of 32 different variations on the 
 
 asterisk algorithm dot 
 
 close comment cse is assigned Varients open a square bracket varient close a square bracket ^ Table2 open a square bracket varient close a square bracket dot comma 
 
 
 
 open comment asterisk of these works on 40 bits at a time and are quite 
 
 asterisk similar dot 
 
 close comment for open a parentheses i is assigned 5 comma term is assigned 0 dot comma dash dash i >=m0 dot comma term is assigned input open a square bracket i close a square bracket close a parentheses open a bracket 
 
 index is assigned bits open a square bracket 25 + i close a square bracket ^ input open a square bracket i close a square bracket dot comma 
 
 index is assigned Table1 open a square bracket index close a square bracket ^ ~ Table2 open a square bracket index close a square bracket ^ cse dot comma 
 
 
 
 temp1 dot b open a square bracket i close a square bracket is assigned Table2 open a square bracket index close a square bracket ^ Table3 open a square bracket index close a square bracket ^ term dot comma 
 
 close a bracket 
 
 temp1 dot b open a square bracket 4 close a square bracket ^ is assigned temp1 dot b open a square bracket 0 close a square bracket dot comma 
 
 
 
 for open a parentheses i is assigned 5 comma term is assigned 0 dot comma dash dash i >=e0 dot comma term is assigned temp1 dot b open a square bracket i close a square bracket close a parentheses open a bracket 
 
 index is assigned bits open a square bracket 20 + i close a square bracket ^ temp1 dot b open a square bracket i close a square bracket dot comma 
 
 index is assigned Table1 open a square bracket index close a square bracket ^ ~ Table2 open a square bracket index close a square bracket ^ cse dot comma 
 
 
 
 temp2 dot b open a square bracket i close a square bracket is assigned Table2 open a square bracket index close a square bracket ^ Table3 open a square bracket index close a square bracket ^ term dot comma 
 
 close a bracket 
 
 temp2 dot b open a square bracket 4 close a square bracket ^ is assigned temp2 dot b open a square bracket 0 close a square bracket dot comma 
 
 
 
 for open a parentheses i is assigned 5 comma term is assigned 0 dot comma dash dash i >=e0 dot comma term is assigned temp2 dot b open a square bracket i close a square bracket close a parentheses open a bracket 
 
 index is assigned bits open a square bracket 15 + i close a square bracket ^ temp2 dot b open a square bracket i close a square bracket dot comma 
 
 index is assigned Table1 open a square bracket index close a square bracket ^ ~ Table2 open a square bracket index close a square bracket ^ cse dot comma 
 
 index is assigned Table2 open a square bracket index close a square bracket ^ Table3 open a square bracket index close a square bracket ^ term dot comma 
 
 
 
 temp1 dot b open a square bracket i close a square bracket is assigned Table0 open a square bracket index close a square bracket ^ Table2 open a square bracket index close a square bracket dot comma 
 
 close a bracket 
 
 temp1 dot b open a square bracket 4 close a square bracket ^ is assigned temp1 dot b open a square bracket 0 close a square bracket dot comma 
 
 
 
 for open a parentheses i is assigned 5 comma term is assigned 0 dot comma dash dash i >=e0 dot comma term is assigned temp1 dot b open a square bracket i close a square bracket close a parentheses open a bracket 
 
 index is assigned bits open a square bracket 10 + i close a square bracket ^ temp1 dot b open a square bracket i close a square bracket dot comma 
 
 index is assigned Table1 open a square bracket index close a square bracket ^ ~ Table2 open a square bracket index close a square bracket ^ cse dot comma 
 
 
 
 index is assigned Table2 open a square bracket index close a square bracket ^ Table3 open a square bracket index close a square bracket ^ term dot comma 
 
 
 
 temp2 dot b open a square bracket i close a square bracket is assigned Table0 open a square bracket index close a square bracket ^ Table2 open a square bracket index close a square bracket dot comma 
 
 close a bracket 
 
 temp2 dot b open a square bracket 4 close a square bracket ^ is assigned temp2 dot b open a square bracket 0 close a square bracket dot comma 
 
 
 
 for open a parentheses i is assigned 5 comma term is assigned 0 dot comma dash dash i >=e0 dot comma term is assigned temp2 dot b open a square bracket i close a square bracket close a parentheses open a bracket 
 
 index is assigned bits open a square bracket 5 + i close a square bracket ^ temp2 dot b open a square bracket i close a square bracket dot comma 
 
 index is assigned Table1 open a square bracket index close a square bracket ^ ~ Table2 open a square bracket index close a square bracket ^ cse dot comma 
 
 
 
 temp1 dot b open a square bracket i close a square bracket is assigned Table2 open a square bracket index close a square bracket ^ Table3 open a square bracket index close a square bracket ^ term dot comma 
 
 close a bracket 
 
 temp1 dot b open a square bracket 4 close a square bracket ^ is assigned temp1 dot b open a square bracket 0 close a square bracket dot comma 
 
 
 
 for open a parentheses i is assigned 5 comma term is assigned 0 dot comma dash dash i >=e0 dot comma term is assigned temp1 dot b open a square bracket i close a square bracket close a parentheses open a bracket 
 
 index is assigned bits open a square bracket i close a square bracket ^ temp1 dot b open a square bracket i close a square bracket dot comma 
 
 index is assigned Table1 open a square bracket index close a square bracket ^ ~ Table2 open a square bracket index close a square bracket ^ cse dot comma 
 
 
 
 output dash is greater than b open a square bracket i close a square bracket is assigned Table2 open a square bracket index close a square bracket ^ Table3 open a square bracket index close a square bracket ^ term dot comma 
 
 close a bracket 
 
 close a bracket 
 
 
 
 static byte Varients open a square bracket close a square bracket is assigned open a bracket 
 
 0xB7 comma 0x74 comma 0x85 comma 0xD0 comma 0xCC comma 0xDB comma 0xCA comma 0x73 comma 
 
 0x03 comma 0xFE comma 0x31 comma 0x03 comma 0x52 comma 0xE0 comma 0xB7 comma 0x42 comma 
 
 0x63 comma 0x16 comma 0xF2 comma 0x2A comma 0x79 comma 0x52 comma 0xFF comma 0x1B comma 
 
 0x7A comma 0x11 comma 0xCA comma 0x1A comma 0x9B comma 0x40 comma 0xAD comma 0x01 close a bracket dot comma 
 
 
 
 static byte Secret open a square bracket close a square bracket is assigned open a bracket 0x55 comma 0xD6 comma 0xC4 comma 0xC5 comma 0x28 close a bracket dot comma 
 
 
 
 static byte Table0 open a square bracket close a square bracket is assigned open a bracket 
 
 0xB7 comma 0xF4 comma 0x82 comma 0x57 comma 0xDA comma 0x4D comma 0xDB comma 0xE2 comma 
 
 0x2F comma 0x52 comma 0x1A comma 0xA8 comma 0x68 comma 0x5A comma 0x8A comma 0xFF comma 
 
 0xFB comma 0x0E comma 0x6D comma 0x35 comma 0xF7 comma 0x5C comma 0x76 comma 0x12 comma 
 
 0xCE comma 0x25 comma 0x79 comma 0x29 comma 0x39 comma 0x62 comma 0x08 comma 0x24 comma 
 
 0xA5 comma 0x85 comma 0x7B comma 0x56 comma 0x01 comma 0x23 comma 0x68 comma 0xCF comma 
 
 0x0A comma 0xE2 comma 0x5A comma 0xED comma 0x3D comma 0x59 comma 0xB0 comma 0xA9 comma 
 
 0xB0 comma 0x2C comma 0xF2 comma 0xB8 comma 0xEF comma 0x32 comma 0xA9 comma 0x40 comma 
 
 0x80 comma 0x71 comma 0xAF comma 0x1E comma 0xDE comma 0x8F comma 0x58 comma 0x88 comma 
 
 0xB8 comma 0x3A comma 0xD0 comma 0xFC comma 0xC4 comma 0x1E comma 0xB5 comma 0xA0 comma 
 
 0xBB comma 0x3B comma 0x0F comma 0x01 comma 0x7E comma 0x1F comma 0x9F comma 0xD9 comma 
 
 0xAA comma 0xB8 comma 0x3D comma 0x9D comma 0x74 comma 0x1E comma 0x25 comma 0xDB comma 
 
 0x37 comma 0x56 comma 0x8F comma 0x16 comma 0xBA comma 0x49 comma 0x2B comma 0xAC comma 
 
 0xD0 comma 0xBD comma 0x95 comma 0x20 comma 0xBE comma 0x7A comma 0x28 comma 0xD0 comma 
 
 0x51 comma 0x64 comma 0x63 comma 0x1C comma 0x7F comma 0x66 comma 0x10 comma 0xBB comma 
 
 0xC4 comma 0x56 comma 0x1A comma 0x04 comma 0x6E comma 0x0A comma 0xEC comma 0x9C comma 
 
 0xD6 comma 0xE8 comma 0x9A comma 0x7A comma 0xCF comma 0x8C comma 0xDB comma 0xB1 comma 
 
 0xEF comma 0x71 comma 0xDE comma 0x31 comma 0xFF comma 0x54 comma 0x3E comma 0x5E comma 
 
 0x07 comma 0x69 comma 0x96 comma 0xB0 comma 0xCF comma 0xDD comma 0x9E comma 0x47 comma 
 
 0xC7 comma 0x96 comma 0x8F comma 0xE4 comma 0x2B comma 0x59 comma 0xC6 comma 0xEE comma 
 
 0xB9 comma 0x86 comma 0x9A comma 0x64 comma 0x84 comma 0x72 comma 0xE2 comma 0x5B comma 
 
 0xA2 comma 0x96 comma 0x58 comma 0x99 comma 0x50 comma 0x03 comma 0xF5 comma 0x38 comma 
 
 0x4D comma 0x02 comma 0x7D comma 0xE7 comma 0x7D comma 0x75 comma 0xA7 comma 0xB8 comma 
 
 0x67 comma 0x87 comma 0x84 comma 0x3F comma 0x1D comma 0x11 comma 0xE5 comma 0xFC comma 
 
 0x1E comma 0xD3 comma 0x83 comma 0x16 comma 0xA5 comma 0x29 comma 0xF6 comma 0xC7 comma 
 
 0x15 comma 0x61 comma 0x29 comma 0x1A comma 0x43 comma 0x4F comma 0x9B comma 0xAF comma 
 
 0xC5 comma 0x87 comma 0x34 comma 0x6C comma 0x0F comma 0x3B comma 0xA8 comma 0x1D comma 
 
 0x45 comma 0x58 comma 0x25 comma 0xDC comma 0xA8 comma 0xA3 comma 0x3B comma 0xD1 comma 
 
 0x79 comma 0x1B comma 0x48 comma 0xF2 comma 0xE9 comma 0x93 comma 0x1F comma 0xFC comma 
 
 0xDB comma 0x2A comma 0x90 comma 0xA9 comma 0x8A comma 0x3D comma 0x39 comma 0x18 comma 
 
 0xA3 comma 0x8E comma 0x58 comma 0x6C comma 0xE0 comma 0x12 comma 0xBB comma 0x25 comma 
 
 0xCD comma 0x71 comma 0x22 comma 0xA2 comma 0x64 comma 0xC6 comma 0xE7 comma 0xFB comma 
 
 0xAD comma 0x94 comma 0x77 comma 0x04 comma 0x9A comma 0x39 comma 0xCF comma 0x7C close a bracket dot comma 
 
 
 
 static byte Table1 open a square bracket close a square bracket is assigned open a bracket 
 
 0x8C comma 0x47 comma 0xB0 comma 0xE1 comma 0xEB comma 0xFC comma 0xEB comma 0x56 comma 
 
 0x10 comma 0xE5 comma 0x2C comma 0x1A comma 0x5D comma 0xEF comma 0xBE comma 0x4F comma 
 
 0x08 comma 0x75 comma 0x97 comma 0x4B comma 0x0E comma 0x25 comma 0x8E comma 0x6E comma 
 
 0x39 comma 0x5A comma 0x87 comma 0x53 comma 0xC4 comma 0x1F comma 0xF4 comma 0x5C comma 
 
 0x4E comma 0xE6 comma 0x99 comma 0x30 comma 0xE0 comma 0x42 comma 0x88 comma 0xAB comma 
 
 0xE5 comma 0x85 comma 0xBC comma 0x8F comma 0xD8 comma 0x3C comma 0x54 comma 0xC9 comma 
 
 0x53 comma 0x47 comma 0x18 comma 0xD6 comma 0x06 comma 0x5B comma 0x41 comma 0x2C comma 
 
 0x67 comma 0x1E comma 0x41 comma 0x74 comma 0x33 comma 0xE2 comma 0xB4 comma 0xE0 comma 
 
 0x23 comma 0x29 comma 0x42 comma 0xEA comma 0x55 comma 0x0F comma 0x25 comma 0xB4 comma 
 
 0x24 comma 0x2C comma 0x99 comma 0x13 comma 0xEB comma 0x0A comma 0x0B comma 0xC9 comma 
 
 0xF9 comma 0x63 comma 0x67 comma 0x43 comma 0x2D comma 0xC7 comma 0x7D comma 0x07 comma 
 
 0x60 comma 0x89 comma 0xD1 comma 0xCC comma 0xE7 comma 0x94 comma 0x77 comma 0x74 comma 
 
 0x9B comma 0x7E comma 0xD7 comma 0xE6 comma 0xFF comma 0xBB comma 0x68 comma 0x14 comma 
 
 0x1E comma 0xA3 comma 0x25 comma 0xDE comma 0x3A comma 0xA3 comma 0x54 comma 0x7B comma 
 
 0x87 comma 0x9D comma 0x50 comma 0xCA comma 0x27 comma 0xC3 comma 0xA4 comma 0x50 comma 
 
 0x91 comma 0x27 comma 0xD4 comma 0xB0 comma 0x82 comma 0x41 comma 0x97 comma 0x79 comma 
 
 0x94 comma 0x82 comma 0xAC comma 0xC7 comma 0x8E comma 0xA5 comma 0x4E comma 0xAA comma 
 
 0x78 comma 0x9E comma 0xE0 comma 0x42 comma 0xBA comma 0x28 comma 0xEA comma 0xB7 comma 
 
 0x74 comma 0xAD comma 0x35 comma 0xDA comma 0x92 comma 0x60 comma 0x7E comma 0xD2 comma 
 
 0x0E comma 0xB9 comma 0x24 comma 0x5E comma 0x39 comma 0x4F comma 0x5E comma 0x63 comma 
 
 0x09 comma 0xB5 comma 0xFA comma 0xBF comma 0xF1 comma 0x22 comma 0x55 comma 0x1C comma 
 
 0xE2 comma 0x25 comma 0xDB comma 0xC5 comma 0xD8 comma 0x50 comma 0x03 comma 0x98 comma 
 
 0xC4 comma 0xAC comma 0x2E comma 0x11 comma 0xB4 comma 0x38 comma 0x4D comma 0xD0 comma 
 
 0xB9 comma 0xFC comma 0x2D comma 0x3C comma 0x08 comma 0x04 comma 0x5A comma 0xEF comma 
 
 0xCE comma 0x32 comma 0xFB comma 0x4C comma 0x92 comma 0x1E comma 0x4B comma 0xFB comma 
 
 0x1A comma 0xD0 comma 0xE2 comma 0x3E comma 0xDA comma 0x6E comma 0x7C comma 0x4D comma 
 
 0x56 comma 0xC3 comma 0x3F comma 0x42 comma 0xB1 comma 0x3A comma 0x23 comma 0x4D comma 
 
 0x6E comma 0x84 comma 0x56 comma 0x68 comma 0xF4 comma 0x0E comma 0x03 comma 0x64 comma 
 
 0xD0 comma 0xA9 comma 0x92 comma 0x2F comma 0x8B comma 0xBC comma 0x39 comma 0x9C comma 
 
 0xAC comma 0x09 comma 0x5E comma 0xEE comma 0xE5 comma 0x97 comma 0xBF comma 0xA5 comma 
 
 0xCE comma 0xFA comma 0x28 comma 0x2C comma 0x6D comma 0x4F comma 0xEF comma 0x77 comma 
 
 0xAA comma 0x1B comma 0x79 comma 0x8E comma 0x97 comma 0xB4 comma 0xC3 comma 0xF4 close a bracket dot comma 
 
 
 
 static byte Table2 open a square bracket close a square bracket is assigned open a bracket 
 
 0xB7 comma 0x75 comma 0x81 comma 0xD5 comma 0xDC comma 0xCA comma 0xDE comma 0x66 comma 
 
 0x23 comma 0xDF comma 0x15 comma 0x26 comma 0x62 comma 0xD1 comma 0x83 comma 0x77 comma 
 
 0xE3 comma 0x97 comma 0x76 comma 0xAF comma 0xE9 comma 0xC3 comma 0x6B comma 0x8E comma 
 
 0xDA comma 0xB0 comma 0x6E comma 0xBF comma 0x2B comma 0xF1 comma 0x19 comma 0xB4 comma 
 
 0x95 comma 0x34 comma 0x48 comma 0xE4 comma 0x37 comma 0x94 comma 0x5D comma 0x7B comma 
 
 0x36 comma 0x5F comma 0x65 comma 0x53 comma 0x07 comma 0xE2 comma 0x89 comma 0x11 comma 
 
 0x98 comma 0x85 comma 0xD9 comma 0x12 comma 0xC1 comma 0x9D comma 0x84 comma 0xEC comma 
 
 0xA4 comma 0xD4 comma 0x88 comma 0xB8 comma 0xFC comma 0x2C comma 0x79 comma 0x28 comma 
 
 0xD8 comma 0xDB comma 0xB3 comma 0x1E comma 0xA2 comma 0xF9 comma 0xD0 comma 0x44 comma 
 
 0xD7 comma 0xD6 comma 0x60 comma 0xEF comma 0x14 comma 0xF4 comma 0xF6 comma 0x31 comma 
 
 0xD2 comma 0x41 comma 0x46 comma 0x67 comma 0x0A comma 0xE1 comma 0x58 comma 0x27 comma 
 
 0x43 comma 0xA3 comma 0xF8 comma 0xE0 comma 0xC8 comma 0xBA comma 0x5A comma 0x5C comma 
 
 0x80 comma 0x6C comma 0xC6 comma 0xF2 comma 0xE8 comma 0xAD comma 0x7D comma 0x04 comma 
 
 0x0D comma 0xB9 comma 0x3C comma 0xC2 comma 0x25 comma 0xBD comma 0x49 comma 0x63 comma 
 
 0x8C comma 0x9F comma 0x51 comma 0xCE comma 0x20 comma 0xC5 comma 0xA1 comma 0x50 comma 
 
 0x92 comma 0x2D comma 0xDD comma 0xBC comma 0x8D comma 0x4F comma 0x9A comma 0x71 comma 
 
 0x2F comma 0x30 comma 0x1D comma 0x73 comma 0x39 comma 0x13 comma 0xFB comma 0x1A comma 
 
 0xCB comma 0x24 comma 0x59 comma 0xFE comma 0x05 comma 0x96 comma 0x57 comma 0x0F comma 
 
 0x1F comma 0xCF comma 0x54 comma 0xBE comma 0xF5 comma 0x06 comma 0x1B comma 0xB2 comma 
 
 0x6D comma 0xD3 comma 0x4D comma 0x32 comma 0x56 comma 0x21 comma 0x33 comma 0x0B comma 
 
 0x52 comma 0xE7 comma 0xAB comma 0xEB comma 0xA6 comma 0x74 comma 0x00 comma 0x4C comma 
 
 0xB1 comma 0x7F comma 0x82 comma 0x99 comma 0x87 comma 0x0E comma 0x5E comma 0xC0 comma 
 
 0x8F comma 0xEE comma 0x6F comma 0x55 comma 0xF3 comma 0x7E comma 0x08 comma 0x90 comma 
 
 0xFA comma 0xB6 comma 0x64 comma 0x70 comma 0x47 comma 0x4A comma 0x17 comma 0xA7 comma 
 
 0xB5 comma 0x40 comma 0x8A comma 0x38 comma 0xE5 comma 0x68 comma 0x3E comma 0x8B comma 
 
 0x69 comma 0xAA comma 0x9B comma 0x42 comma 0xA5 comma 0x10 comma 0x01 comma 0x35 comma 
 
 0xFD comma 0x61 comma 0x9E comma 0xE6 comma 0x16 comma 0x9C comma 0x86 comma 0xED comma 
 
 0xCD comma 0x2E comma 0xFF comma 0xC4 comma 0x5B comma 0xA0 comma 0xAE comma 0xCC comma 
 
 0x4B comma 0x3B comma 0x03 comma 0xBB comma 0x1C comma 0x2A comma 0xAC comma 0x0C comma 
 
 0x3F comma 0x93 comma 0xC7 comma 0x72 comma 0x7A comma 0x09 comma 0x22 comma 0x3D comma 
 
 0x45 comma 0x78 comma 0xA9 comma 0xA8 comma 0xEA comma 0xC9 comma 0x6A comma 0xF7 comma 
 
 0x29 comma 0x91 comma 0xF0 comma 0x02 comma 0x18 comma 0x3A comma 0x4E comma 0x7C close a bracket dot comma 
 
 
 
 static byte Table3 open a square bracket close a square bracket is assigned open a bracket 
 
 0x73 comma 0x51 comma 0x95 comma 0xE1 comma 0x12 comma 0xE4 comma 0xC0 comma 0x58 comma 
 
 0xEE comma 0xF2 comma 0x08 comma 0x1B comma 0xA9 comma 0xFA comma 0x98 comma 0x4C comma 
 
 0xA7 comma 0x33 comma 0xE2 comma 0x1B comma 0xA7 comma 0x6D comma 0xF5 comma 0x30 comma 
 
 0x97 comma 0x1D comma 0xF3 comma 0x02 comma 0x60 comma 0x5A comma 0x82 comma 0x0F comma 
 
 0x91 comma 0xD0 comma 0x9C comma 0x10 comma 0x39 comma 0x7A comma 0x83 comma 0x85 comma 
 
 0x3B comma 0xB2 comma 0xB8 comma 0xAE comma 0x0C comma 0x09 comma 0x52 comma 0xEA comma 
 
 0x1C comma 0xE1 comma 0x8D comma 0x66 comma 0x4F comma 0xF3 comma 0xDA comma 0x92 comma 
 
 0x29 comma 0xB9 comma 0xD5 comma 0xC5 comma 0x77 comma 0x47 comma 0x22 comma 0x53 comma 
 
 0x14 comma 0xF7 comma 0xAF comma 0x22 comma 0x64 comma 0xDF comma 0xC6 comma 0x72 comma 
 
 0x12 comma 0xF3 comma 0x75 comma 0xDA comma 0xD7 comma 0xD7 comma 0xE5 comma 0x02 comma 
 
 0x9E comma 0xED comma 0xDA comma 0xDB comma 0x4C comma 0x47 comma 0xCE comma 0x91 comma 
 
 0x06 comma 0x06 comma 0x6D comma 0x55 comma 0x8B comma 0x19 comma 0xC9 comma 0xEF comma 
 
 0x8C comma 0x80 comma 0x1A comma 0x0E comma 0xEE comma 0x4B comma 0xAB comma 0xF2 comma 
 
 0x08 comma 0x5C comma 0xE9 comma 0x37 comma 0x26 comma 0x5E comma 0x9A comma 0x90 comma 
 
 0x00 comma 0xF3 comma 0x0D comma 0xB2 comma 0xA6 comma 0xA3 comma 0xF7 comma 0x26 comma 
 
 0x17 comma 0x48 comma 0x88 comma 0xC9 comma 0x0E comma 0x2C comma 0xC9 comma 0x02 comma 
 
 0xE7 comma 0x18 comma 0x05 comma 0x4B comma 0xF3 comma 0x39 comma 0xE1 comma 0x20 comma 
 
 0x02 comma 0x0D comma 0x40 comma 0xC7 comma 0xCA comma 0xB9 comma 0x48 comma 0x30 comma 
 
 0x57 comma 0x67 comma 0xCC comma 0x06 comma 0xBF comma 0xAC comma 0x81 comma 0x08 comma 
 
 0x24 comma 0x7A comma 0xD4 comma 0x8B comma 0x19 comma 0x8E comma 0xAC comma 0xB4 comma 
 
 0x5A comma 0x0F comma 0x73 comma 0x13 comma 0xAC comma 0x9E comma 0xDA comma 0xB6 comma 
 
 0xB8 comma 0x96 comma 0x5B comma 0x60 comma 0x88 comma 0xE1 comma 0x81 comma 0x3F comma 
 
 0x07 comma 0x86 comma 0x37 comma 0x2D comma 0x79 comma 0x14 comma 0x52 comma 0xEA comma 
 
 0x73 comma 0xDF comma 0x3D comma 0x09 comma 0xC8 comma 0x25 comma 0x48 comma 0xD8 comma 
 
 0x75 comma 0x60 comma 0x9A comma 0x08 comma 0x27 comma 0x4A comma 0x2C comma 0xB9 comma 
 
 0xA8 comma 0x8B comma 0x8A comma 0x73 comma 0x62 comma 0x37 comma 0x16 comma 0x02 comma 
 
 0xBD comma 0xC1 comma 0x0E comma 0x56 comma 0x54 comma 0x3E comma 0x14 comma 0x5F comma 
 
 0x8C comma 0x8F comma 0x6E comma 0x75 comma 0x1C comma 0x07 comma 0x39 comma 0x7B comma 
 
 0x4B comma 0xDB comma 0xD3 comma 0x4B comma 0x1E comma 0xC8 comma 0x7E comma 0xFE comma 
 
 0x3E comma 0x72 comma 0x16 comma 0x83 comma 0x7D comma 0xEE comma 0xF5 comma 0xCA comma 
 
 0xC5 comma 0x18 comma 0xF9 comma 0xD8 comma 0x68 comma 0xAB comma 0x38 comma 0x85 comma 
 
 0xA8 comma 0xF0 comma 0xA1 comma 0x73 comma 0x9F comma 0x5D comma 0x19 comma 0x0B comma 
 
 0x00 comma 0x00 comma 0x00 comma 0x00 comma 0x00 comma 0x00 comma 0x00 comma 0x00 comma 
 
 0x33 comma 0x72 comma 0x39 comma 0x25 comma 0x67 comma 0x26 comma 0x6D comma 0x71 comma 
 
 0x36 comma 0x77 comma 0x3C comma 0x20 comma 0x62 comma 0x23 comma 0x68 comma 0x74 comma 
 
 0xC3 comma 0x82 comma 0xC9 comma 0x15 comma 0x57 comma 0x16 comma 0x5D comma 0x81 close a bracket dot comma 
 
 0xC3 comma 0x82 comma 0xC9 comma 0x15 comma 0x57 comma 0x16 comma 0x5D comma 0x81 close a bracket dot comma 
 
 